#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//int main()
//{
//	int A, B, C, D, E;
//	for (A = 1; A<=5 ; A++)
//	{
//		for (B = 1; B <= 5; B++)
//		{
//			for (C = 1; C <= 5; C++)
//			{
//				for (D = 1; D <= 5; D++)
//				{
//					for (E = 1; E <= 5; E++)
//					{
//						if (A * B * C * D * E == 120 &&
//							(B == 2) + (A == 3) == 1 &&
//							(B == 2) + (E == 4) == 1 &&
//							(C == 1) + (D == 2) == 1 &&
//							(C == 5) + (D == 3) == 1 &&
//							(E == 4) + (A == 1) == 1)
//							goto end;
//					}
//
//				}
//			}
//		}
//	}
//	end:
//	printf("A=%d,B=%d,C=%d,D=%d,E=%d", A, B, C, D, E);
//	return 0;
//}

//int main()
//{
//	int A = 0, B = 0, C = 0, D = 0;
//	int a = 1;
//	switch (a)
//	{
//	case 1: A = 1;
//		if ((A != 1) + (C == 1) + (D == 1) + (D != 1) == 3)
//		{
//			printf("A");
//			break;
//		}
//		else
//			A = 0;
//	case 2:B = 1;
//		if ((A != 1) + (C == 1) + (D == 1) + (D != 1) == 3)
//		{
//			printf("B");
//			break;
//		}
//		else
//		    B = 0;
//	case 3:C = 1;
//		if ((A != 1) + (C == 1) + (D == 1) + (D != 1) == 3)
//		{
//			printf("C");
//			break;
//		}
//		else
//			C = 0;
//	case 4:D = 1;
//		if ((A != 1) + (C == 1) + (D == 1) + (D != 1) == 3)
//		{
//			printf("D");
//			break;
//		}
//		else
//			 D= 0;
//	}
//	return 0;
//}
#define line 20
int i = 1;
int arr[2] = { 1,1 };
void my_print(int lin,int arr[])
{
	int arr1[1000] = { 0 };
	if (i==1)
	{
		puts("1");
		if (line > 1)
			my_print(++i, arr);
		else
			return 0;
	}
	else if(i<=line)
	{
		int j = 0;
		arr1[0] = 1;
		arr1[lin - 1] = 1;
		for (j = 1; j < lin-1; j++)
		{
			arr1[j] = arr[j - 1] + arr[j];
		}
		for (j = 0; j < lin; j++)
		{
			printf("%d ",arr1[j]);
		}
		printf("\n");
		i++;
		if (i <= line)
		my_print(i, arr1);
	}
	return 0;
}
int main()
{
	my_print(line,arr);
	return 0;
}
